package com.yunxin.core.application.dto.product;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author zero°
 * @since 2023-06-03
 */
@Data
@Schema(description = "产品详情对象")
public class ProductDetailDTO implements Serializable {

    /**
     * 产品id
     */
    @Schema(description = "产品id")
    private Long productId;
    /**
     * 产品名称
     */
    @Schema(description = "产品名称")
    private String productName;
    /**
     * 产品图片
     */
    @Schema(description = "产品图片")
    private String productImage;
    /**
     * 产品标签(,连接)
     */
    @Schema(description = "产品标签(,连接)")
    private String productLabeling;
    /**
     * 产品solGan
     */
    @Schema(description = "产品solGan")
    private String productSolGan;
    /**
     * 产品权益描述(JSON实体-list)
     */
    @Schema(description = "产品权益描述(JSON实体-list)")
    private List<EquityDescription> equityDescription;
    /**
     * 最高可借款金额
     */
    @Schema(description = "最高可借款金额")
    private BigDecimal highestBorrowableAmount;
    /**
     * 最高可贷款金额
     */
    @Schema(description = "最高可贷款金额")
    private BigDecimal highestLoanAmount;
    /**
     * 特殊卖点
     */
    @Schema(description = "特殊卖点")
    private String sellingPoint;

    /**
     * 参考利率(JSON实体)
     */
    @Schema(description = "参考利率(JSON实体)")
    private ReferenceRate referenceRate;

    @Data
    public static class EquityDescription implements Serializable {
        /**
         * 权益描述图片
         */
        @Schema(description = "权益描述图片")
        private String imageUrl;
        /**
         * 主卖点
         */
        @Schema(description = "权益主卖点")
        private String mainPoint;
        /**
         * 副卖点
         */
        @Schema(description = "权益描述副卖点")
        private String point;
    }

    @Data
    public static class ReferenceRate implements Serializable {
        /**
         * 最低借款周期
         */
        @Schema(description = "最低借款周期")
        private BigDecimal minReferenceRate;
        /**
         * 最低借款周期期限单位 1.%天 2.%周 3.%月 4.%年
         */
        @Schema(description = "最低借款周期期限单位 1.%天 2.%周 3.%月 4.%年")
        private Integer minReferenceRateUnit;
        /**
         * 最高借款周期
         */
        @Schema(description = "最高借款周期")
        private BigDecimal maxReferenceRate;
        /**
         * 最高借款周期期限单位 1.%天 2.%周 3.%月 4.%年
         */
        @Schema(description = "最高借款周期期限单位 1.%天 2.%周 3.%月 4.%年")
        private Integer maxReferenceRateUnit;

    }
}
